package com.jy.wms.dao;

import com.jy.wms.common.base.BaseDao;
import com.jy.wms.pojo.WmsEstimatedArrivalOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @ClassName: WmsEstimatedArrivalOrderMapper.java
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @Author Liyi
 * @Date Wed Sep 27 09:24:27 CST 2017
 */
public interface WmsEstimatedArrivalOrderMapper extends BaseDao<WmsEstimatedArrivalOrder> {

    /**
     * 修改预期到货通知单打印状态
     * @param map ASNids
     * @return
     */
    public Integer updateDyzt(@Param("map")Map<String,Object> map);

    /**
     * 插入一条记录
     * @param entity 实体对象
     * @return int
     */
    public Integer baseInsert(@Param("WmsEstimatedArrivalOrder") WmsEstimatedArrivalOrder entity);

    /**
     * 插入一条记录（匹配有值的字段）
     * @param entity 实体对象
     * @return int
     */
    public Integer baseInsertSelective(@Param("WmsEstimatedArrivalOrder") WmsEstimatedArrivalOrder entity);

    /**
     * 删除（根据主键ID删除）
     * @param id 主键
     * @return int
     */
    public Integer baseDeleteByPrimaryKey(@Param("id") String id);

    /**
     * 删除（根据ID 批量删除）
     * @param idList 主键ID列表
     * @return int
     */
    public Integer baseDeleteBathPrimaryKeys(@Param("list") List<String> idList);


    /**
     * 分页查询
     * @param entity 实体
     * @return List<WmsEstimatedArrivalOrder>
     */
    public List<WmsEstimatedArrivalOrder>  baseSelectPage(
            @Param("WmsEstimatedArrivalOrder") WmsEstimatedArrivalOrder entity, @Param("hzid") String hzid,@Param("ssckid") String ssckid,
            @Param("cjsj_start") String cjsj_start, @Param("cjsj_end") String cjsj_end, @Param("ckmc") String ckmc, @Param("hzmc") String hzmc);
    /**
     * 码盘分页查询
     * @param entity 实体
     * @return List<WmsEstimatedArrivalOrder>
     */
    public List<WmsEstimatedArrivalOrder>  seachSorting(
            @Param("WmsEstimatedArrivalOrder") WmsEstimatedArrivalOrder entity, @Param("hzid") String hzid,
            @Param("ssckid") String ssckid, @Param("cjsj_start") String cjsj_start, @Param("cjsj_end") String cjsj_end, @Param("ckmc") String ckmc);
    /**
     * ASN码盘分页查询
     * @param entity 实体
     * @return List<WmsEstimatedArrivalOrder>
     */
    public List<WmsEstimatedArrivalOrder>  seachASNReceiving(
            @Param("WmsEstimatedArrivalOrder") WmsEstimatedArrivalOrder entity, @Param("hzid") String hzid,
            @Param("ssckid") String ssckid, @Param("cjsj_start") String cjsj_start, @Param("cjsj_end") String cjsj_end, @Param("ckmc") String ckmc);

    /**
     * 分页查询PO编号列表
     * @param bh 参数
     * @return List<WmsEstimatedArrivalOrder>
     */
    public List<Map<String,Object>>  baseSelectPurchaseOrderPage(@Param("bh") String bh,@Param("hzid") String hzid,@Param("ckmc") String ckmc);

    /**
     * 新增查询供应商编号及预计到货时间
     * @param sscgdid 采购订单ID
     * @return
     */
    public Map<String,Object> getGysAndYjsj(@Param("sscgdid") String sscgdid);

    /**
     * 分页查询PO明细列表
     * @param sscgdid 所属采购订单ID
     * @return List<WmsEstimatedArrivalOrder>
     */
    public List<Map<String,Object>>  getPoDetailed(@Param("sscgdid") String sscgdid);

    /**
     * 查询所有类型为“入库单”的收发类别
     * @param hzid 货主ID
     * @return
     */
    public Map<String,Object> getOrderType(@Param("hzid") String hzid);

    /**
     * 获取打印ASN订单需要的信息
     * @param map hzmc货主名称 ckdz仓库地址 list ids
     * @return
     */
    public List<Map<String,Object>> print(@Param("map") Map<String,Object> map);

    /**
     * 获取所有当前货主下供应商信息
     * @param hzid 货主ID
     * @return
     */
    public List<Map<String,Object>> getGysByHzid(@Param("hzid") String hzid);

    /**
     * 获取当前货主下 自动生成批次号shscpch，自动生成生产日期 shscscrq,
     * @param hzid 货主ID
     * @return
     */
    public Map<String,Object> getZdByHzid(@Param("hzid") String hzid);

    /**
     * 获取所有当前货主下货品信息
     * @param hzid 货主ID
     * @return
     */
    public List<Map<String,Object>> getHpByHzid(@Param("hzid") String hzid);

    /**
     * 获取新增需要的信息
     * @param id 采购订单明细ID
     * @param ckmc 所属仓库名称
     * @return
     */
    public Map<String,Object> getInfo(@Param("id") String id, @Param("ckmc") String ckmc);

    /**
     * 获取新增需要的信息
     * @param list 采购订单明细ID列表
     * @return
     */
    public List<Map<String,Object>> getInfoDetailed(@Param("list") List<String> list);

    /**
     * 查询（根据主键ID查询）
     * @param id 主键ID
     * @return User
     */
    public WmsEstimatedArrivalOrder  baseSelectByPrimaryKey(@Param("id") String id);

    /**
     * 在包装明细表内根据主单位 采购订单主单位ID 查询箱包装的数量
     * @param zdw
     * @return
     */
    public String getCountByZdw(@Param("zdw") String zdw);

    /**
     * 查询（根据主键对应采购订单ID查询）
     * @param dycgdid 对应采购订单ID
     * @return User
     */
    public Map<String,Object>  baseSelectByPrimaryDcgdid(@Param("dycgdid") String dycgdid);

    /**
     * 查询（根据ID 批量查询）
     * @param idList 主键ID列表
     * @return list
     */
    public Integer baseSelectBathPrimaryKeys(@Param("list") List<WmsEstimatedArrivalOrder> idList);

    /**
     *修改 （匹配有值的字段）
     * @param entity 主键ID列表
     * @return int
     */
    public Integer baseUpdateByPrimaryKeySelective(@Param("WmsEstimatedArrivalOrder") WmsEstimatedArrivalOrder entity);

    /**
     *修改（根据主键ID修改）
     * @param entity 主键ID列表
     * @return int
     */
    public Integer baseUpdateByPrimaryKey(@Param("WmsEstimatedArrivalOrder") WmsEstimatedArrivalOrder entity);

    /**
     * 根据采购订单ID获取现有的预期到货通知单明细
     * @param list 采购订单明细IDS
     * @return
     */
    public List<Map<String,Object>> getByCgddid(@Param("list") List<String> list);

    /**
     * 判断出当前列表内的id在预期到货通知单内 zjzt为0的个数
     * @param list
     * @return
     */
    public Integer getCountByZjzt (@Param("list") List<String> list);

    /**
     * 根据预期到货通知单ID获取POid
     * @param id ASN ID
     * @return
     */
    public String getPoidById(@Param("id") String id);

    /**
     * 根据预期到货通知单ID获取 dycgdid asnzt shzt
     * @param id ASN ID
     * @return
     */
    public Map<String,Object> getPoidAsnztShzt(@Param("id") String id);


    /**
     * 作废预期到货通知单
     * @param map list=ids scr 订单删除人 scsj 订单时间
     * @return
     */
    public Integer delAsn(@Param("map")Map<String,Object> map);

    /**
     * 收货完成 预期到货通知单
     * @param map list=ids scr 订单删除人 scsj 订单时间
     * @return
     */
    public Integer fulfilAsn(@Param("map")Map<String,Object> map);

    /**
     * 审核ASN订单
     * @param map list=ids ddshr审核人 shenhsj审核时间
     * @return
     */
    public Integer auditing(@Param("map")Map<String,Object> map);

    /**
     * 根据预期到货通知单ID查询对应的乐观锁
     * @param id 采购订单ID
     * @return
     */
    public Long getLocking(@Param("id") String id);

    /**
     * 向预期到货通知单插入乐观锁
     * @param map id 采购订单ID locking 乐观锁数值
     * @return
     */
    public Integer setLocking(@Param("map") Map<String,Object> map);

    /**
     * 根据ASN编号查询对应的数量
     * @param asnbh
     * @return
     */
    public Integer getCountByAsnbh(@Param("asnbh") String asnbh);

}
